import {AsyncStorage} from 'react-native';

//这里定义接口请求的域名
const BASE_URL = 'http://smart.btfxm.com/api';
/**
 *  method 请求接口名
 *  params 请求参数数据对象
 */

var token = '';
AsyncStorage.getItem('token', (error, result) => {
  if (!error) {
    token = result;
  }
});

const xhrPost = (method, params) => {
  // let tokens = null;
  console.log(AsyncStorage);
  let tokens = null;
  AsyncStorage.getItem('tokens', (error, result) => {
    console.log(error);
    console.log(result);
    return result;
  });
  console.log(tokens);
  //结合Promise来使用，可以异步处理，无需再写cb；并且可以结合ES6,的then链式调用，使用方便
  return new Promise((resolve, reject) => {
    const url = BASE_URL + method;
    fetch(url, {
      method: 'POST', //定义请求方式，POST、GET、PUT等S
      headers: {
        Accept: 'application/json', // 提交参数的数据方式,这里以json的形式
        'Content-Type': 'application/json',
        authorization: tokens,
      },
      body: JSON.stringify(params), //提交的参数
    })
      .then(response => response.json()) //数据解析的方式，json解析
      .then(responseJson => {
        resolve(responseJson);
      })
      .catch(error => {
        console.error(error);
      });
  });
};

const xhrGet = (method, params) => {
  let url = BASE_URL + method;
  if (params) {
    let paramsArray = [];
    //拼接参数
    Object.keys(params).forEach(key =>
      paramsArray.push(key + '=' + params[key]),
    );
    if (url.search(/\?/) === -1) {
      url += '?' + paramsArray.join('&');
    } else {
      url += '&' + paramsArray.join('&');
    }
  }
  return new Promise((resolve, reject) => {
    fetch(url, {
      method: 'GET',
      headers: {
        authorization: '',
      },
    })
      .then(responseJson => responseJson.json())
      .then(responseJson => {
        resolve(responseJson);
      })
      .catch(error => {
        console.error(error);
      });
  });
};

module.exports = {
  xhrPost,
  xhrGet,
};
